#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QTcpServer>
#include <QTcpSocket>
#include <QHBoxLayout>
#include <QVBoxLayout>
#include <QPushButton>
#include <QTextBrowser>
#include <QLabel>
#include <QComboBox>
#include <QSpinBox>
#include <QLineEdit>
#include <QHostInfo>
#include <QNetworkInterface>
#include <QDebug>

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
private:
    QTcpServer* tcpServer = nullptr;
    QTcpSocket* tcpSocket = nullptr;
    QList<QHostAddress> IPList;

    QPushButton* pushButton[4] = {nullptr};
    QLabel* label[2] = {nullptr};
    QTextBrowser* textBrowser = nullptr;
    QWidget* hWidget[3] = {nullptr};
    QHBoxLayout* hBoxLayout[3] = {nullptr};
    QWidget* vWidget = nullptr;
    QVBoxLayout* vBoxLayout = nullptr;

    QComboBox* comboBox = nullptr;/* 显示本地IP */
    QSpinBox* spinBox = nullptr;/* 选择端口号 */
    QLineEdit* lineEdit = nullptr;/* 文本输入框 */

    void getLocalHostIp();/* 获取本地所有IP */
private slots:
    void clientConnect();/* 客户端连接处理 */
    void startListen();/* 开始监听 */
    void stopListen();/* 停止监听 */
    void clearTestBrowser();/* 清空文本框 */
    void recvMessages();/* 接收消息 */
    void sendMessages();/* 发送消息 */
    void socketStateChange(QAbstractSocket::SocketState);/* 连接状态改变 */
};

#endif // MAINWINDOW_H
